Electronic systems such as computer systems typically include several components that are implemented as integrated circuits. Modern integrated circuits have an ability to include a limited amount of "intelligence". Thus, by including state machines within an integrated circuit, the integrated circuit can function somewhat autonomously within the system. A state machine can be implemented using a programmable logic array within the integrated circuit. Alternately, a state machine can be implemented within the integrated circuit in the form of a microcontroller and an associated state machine program that is executed by the microcontroller. An intelligent integrated circuit can be ordered to perform a task and will then perform the task autonomously. When the task has completed, the autonomous circuit will typically report that the task has completed and provide results generated by the task to the component that requested the task be performed.
This intelligent component scheme has the benefit of distributing processing burden within the system because there is no longer a need to have a single component control every action of every component within the system. Furthermore, this scheme has the benefit of relieving bus traffic within the system because an intelligent integrated circuit component can be ordered to perform a task without a need to provide additional orders that supervise completion of the task. Moreover, this scheme has the benefit of delegating tasks to a lower level within the system so that the details of the task to be perform become transparent to the component that requests the task be performed.
For example, a flash electrically-erasable programmable read only memory (flash EEPROM) is a type of integrated circuit that has benefited by the inclusion of a state machine. The earliest flash EEPROMs did not have an internal state machine. Every step of complex tasks, such as programming and erasure, was controlled externally to the flash EEPROM. Many modern flash EEPROMs have an internal write state machine to control the write and erase tasks.
The advantage of providing intelligence to a component is offset by the disadvantage of increased design complexity of the component. The state machine must also compete for precious die area within the integrated circuit. Furthermore, the state machine must be tailored to meet the needs of the particular component it will be controlling. Thus, different versions of similar components typically have different state machines to meet the particular needs of each component.
There has also been a recent trend toward lowering the power requirements of portable computers. In order to reduce power consumption, much of the integrated circuitry used in personal computers is being redesigned to run at low voltage levels. Such is the case for flash EEPROMs. The circuitry and components used in portable computers are being designed to operate at voltage levels such as 5 volts and 3.3 volts in order to use less current. This helps to reduce the power requirements of such computers.
Some of the features of portable computers, however, require higher voltages. Recently, flash EEPROMs have been used to store BIOS processes. This memory may be erased and reprogrammed without removing the BIOS circuitry from the computer by running a small update program when the BIOS processes are changed. Other versions of flash EEPROMs are being used for long term storage in place of electro-mechanical hard disk drives. Under the proper conditions, flash EEPROMs can also be used as main memory in place of volatile memory. Erasing and reprogramming a flash EEPROM, however, typically requires approximately twelve volts to accomplish effectively; and the lower voltage batteries provided in portable computers, in general, are not capable of furnishing this voltage with sufficient current to accomplish the operations.
Typically, charge pump circuits have been used to provide a high voltage from a lower voltage source. The positive source method of erasing flash EEPROMs however, draws a substantial amount of current. Similarly, programming such arrays using traditional techniques has required large amounts of current. Charge pumps furnishing such voltages with sufficient current typically utilize large capacitors which require a large amount of die space. Recently it has been discovered that using specially designed charge pumps sufficient current can be generated to accomplish positive source erase and the programming of flash EEPROM memory arrays. A charge pump arrangement for accomplishing positive source erase is disclosed in detail in U.S. patent application Ser. No. 08/119,423, entitled Method And Apparatus For A Two Phase Bootstrap Charge Pump, K. Tedrow et al, filed on Sep. 10, 1993, now U.S. Pat. No. 5,422,586, and assigned to the assignee of the present invention.
It is still desirable, even using advanced charge pumps, to reduce the amount of current used in programming flash EEPROM arrays. A flash EEPROM array is made up of memory cells which include floating gate field effect transistor devices. The N type memory transistors may be programmed by storing a negative charge on the floating gate. A negative charge on the floating gate shifts the threshold voltage of the memory transistor making it less conductive. The condition of the memory transistors (programmed or erased) may be detected by interrogating the cells and sensing whether current flows or not. The programming of memory cells is typically accomplished a word at a time but conventionally requires that the drain of selected cells be placed at six or seven volts, the gate at eleven or twelve volts, and the source at ground. This programming operation draws substantial current because the gate terminal is raised above the level of the drain and source terminals while a significant potential difference is placed between the drain and source terminals.
The simultaneous programming of each bit of a sixteen bit word requires approximately one milliampere of current so that programming one word draws approximately sixteen milliamperes. The peak current drawn during the conventional programming operation may be as high as forty milliamperes. This is a very large amount of current and requires larger charge pumps with larger capacitances that require a large amount of die space and therefore tend to increase rather than decrease the size of components used in portable computers. Moreover, integrated circuit charge pumps cannot be made to operate as efficiently as can stand alone charge pumps because they do not make use of elements such as inductors which maximize efficiency. In fact, such charge pumps operate at efficiencies of approximately forty percent so that, for example, seventy-two milliamperes of peak current are required to supply the sixteen milliamperes necessary for programming a word. For this reason, apparatus and methods which reduce current requirements for programming flash EEPROM memory arrays are very desirable. For example, one approach is to break a word to be programmed into four four-bit nibbles and then program the word a nibble at a time. This nibble programming scheme has the advantage of reducing the programming current required at any given time to a quarter of that required for programming the entire word at once. Thus, less area of the die must be devoted to the charge pumps because they need to provide less current at any given instant. Of course, the disadvantage with the nibble programming scheme is that it quadruples the amount of time required to program a word.
Many computer systems, on the other hand, have a 12 volt source available that can be used by the flash EEPROM when programming and erasing. In such systems, there is no need to use charge pumps. Furthermore, provided the 12 volt source is adequate to ease the current constraint, and further provided there are no other current constraints, nibble programming can be avoided and an entire word can be programmed at once.
One approach to meet these different system needs is to design two separate flash EEPROMs, one to operate in a constraint current environment, and another to operate in an unconstrained current environment Thus, for example, the state machines for the two versions would be different because the former one would have to control nibble programming and the latter would not. One disadvantage with this approach is the need to design, test, manufacture, stock and support separate versions of what otherwise would be essentially the same flash EEPROM. Moreover, such an approach does not permit a flexibility wherein the same part could be used in a low current mode when a constrained current source was available and in a faster, high current mode when the current source was not constrained. An example of this would be a mobile computer system that operated using batteries when in the field, but operated using house current when in the office.
A second approach to meet the different system needs is to provide a single flash EEPROM that can operate using a limited current mode, but that can also operate using an unlimited current mode if an adequate current source is available. An advantage with this approach is the ability to design, test, manufacture, stock and support a single version of the flash EEPROM that can be used in systems that have a current limited supply and those that do not. A disadvantage is that the state machine to control the part is more complex than would otherwise be required because it must operate differently when a low programming current is available than when a high programming current is available. Moreover, the extra complexity can exceed constraints of the state machine. For example, there may be insufficient storage available on an integrated circuit to hold a larger write state machine program that is required to support both current modes.